<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
    <meta http-equiv="X-UA-Compatible" content="ie=edge,chrome=1">
    <meta name="referrer" content="never">
    <title>字符串使用正则的方法</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        ul {
            list-style: none;
        }
    </style>
</head>
<body>
    
    <script type="text/javascript">
        // 非  [^xxx]
        var str = "hello 3 world";
        console.log(str.match(/[^hlo]/g)); // [e, " ", w, r, d]

        // str.search(reg)  index  -1
        console.log(str.search("llo")); 
        console.log(str.search(/\d/)); 


        // str.split(sperator|reg)
        console.log(str.split("o")); // [hell, 3 w, rld];
        console.log(str.split(/o/)); // [hell, 3 w, rld];

        var strr = "hello3world2haha1pice";
        console.log(strr.split(/\d/)); // [hello, world, haha, pice]

        console.clear();
        // str.replace(字串|reg, 替换的字串|使用特殊字符|函数)
        // 全字替换
        console.log(str.replace("l", "p"));
        console.log(str.replace(/l/g, "p"));

        console.clear();
        // 特殊字符  $$往字符串中添加$字符  $&正则匹配到的内容  $`正则匹配内容前面的内容  $'正则匹配内容后面的内容  $n第n个捕获组的内容
        var nameStr = " John Smith Sam Hong";
        // console.log(nameStr.replace(/ /g, " $"));
        // console.log(nameStr.replace(/\w+/g, "Mr.$&"));
        // console.log("hello".replace(/llo/g, "$`")); // hehe
        // console.log("hello".replace(/he/g, "$'")); // llollo
        console.log("Hong Xiao".replace(/(\w+) (\w+)/g, "$2 $1")); // Xiao Hong


        console.clear();
        // 第二个参数是函数  function(matchStr, [p1...pn]){}
        // 函数接受的实参：正则匹配到的内容, (捕获组的内容), 匹配的内容对应的下标, 源字符串
        // 函数的返回值即为替换的值
        var rv = nameStr.replace(/\w+/g, function (mtr, index, str){
            console.log(mtr);
            // console.log(p1);
            // console.log(p2);
            console.log("index", index);
            console.log("源串", str);
            return "Mr." + mtr;
        })

        console.log("rv", rv);
    </script>
</body>
</html>